package com.atguigu.srb.listener;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.atguigu.srb.entity.Dict;
import com.atguigu.srb.entity.excel.DictExcelVo;
import com.atguigu.srb.mapper.DictMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.Date;

@Component
//AnalysisEventListener<DictExcelVo>: 回调监听器的父类   ，DictExcelVo：告诉回调监听器每一行数据需要转为什么类型的对象
public class DictExcelListener extends AnalysisEventListener<DictExcelVo> {
    @Autowired
    DictMapper dictMapper;
    //回调方法： 没读取一行数据回调一次 并传入读取的数据
    @Override
    public void invoke(DictExcelVo data, AnalysisContext context) {
        //: 判断数据是否已存在，如果已存在 不处理！！！
        //将读取到的data写入到数据库表中
        Dict dict = new Dict();
        BeanUtils.copyProperties(data, dict);
        dict.setIsDeleted(0);
        dict.setCreateTime(new Date());
        dict.setUpdateTime(new Date());
        dictMapper.insert(dict);
    }

    //回调方法： excel文件解析完成回调一次(收尾方法)
    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        System.out.println("数据字典导入完毕");
    }
}
